#include <stdio.h>

#include "listsofint.h"

#define DEBUG printf("DEBUG\n")
#define NEWLINE printf("\n")

void
print_list(List);
int
isodd(int);
int
isdivbyfour(int);
int
isdivbythree(int);

int
main(void)
{
  List ptr = NULL,ptr2;
  int i;
 
  for(i= 0;i< 53;i++)
    {
      ptr = list_add_element(i,ptr);
    }

  print_list(ptr);
  NEWLINE;


  ptr2 = list_copy(ptr);
  ptr2 = list_filter(ptr2,isodd);
  print_list(ptr2);
  NEWLINE;


  NEWLINE;
  ptr2 = list_filter(ptr2,isdivbyfour);
  print_list(ptr2);
  NEWLINE;
 
  NEWLINE;
  ptr2 = list_filter(ptr2,isdivbythree);
  print_list(ptr2);
  NEWLINE;
  
  list_free(ptr);
  list_free(ptr2);
  exit(EXIT_SUCCESS);

}

int
isodd(int i)
{
  if( ((i%2) == 0 ) )
    return 1;

  return 0;

}

int
isdivbyfour(int i)
{
  if( ((i%4) == 0 ) )
    return 1;

  return 0;
}

int
isdivbythree(int i)
{
  if( ((i%3) == 0 ) )
    return 1;

  return 0;
}

void
print_list(List ptr)
{
  List p;

  if (ptr==NULL)
    {
      printf("NULL");
      return ;
    }
  
  for(p=ptr; p != NULL; p=p->next )
    printf("%d ",p->el);
  
  printf("\n");
}
